package com.jcli.util._获取并保存窗体大小;

import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.*;

/**
 * 将数据保存本地
 *
 * 想在运行时记录窗体大小以便下次启动程序时应用，你可以在窗体的关闭时将窗体的大小保存在本地，然后在窗体启动时读取这些值并应用。
 */
public class WindowSizeRecorder extends JFrame {
    private static final String SIZE_FILE = "size/size.txt";

    public WindowSizeRecorder() {
        // 设置标题
        setTitle("窗体大小记录器");

        // 设置窗体关闭时的操作
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 从文件中读取窗体大小
        Dimension size = readSizeFromFile();
        setSize(size);

        // 设置窗体位置
        setLocationRelativeTo(null);

        // 添加窗体大小变化监听器
        addComponentListener(new java.awt.event.ComponentAdapter() {
            public void componentResized(java.awt.event.ComponentEvent evt) {
                saveWindowSizeToFile();
            }
        });

        // 添加窗体关闭监听器
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                saveWindowSizeToFile();
            }
        });

        // 设置可见性
        setVisible(true);
    }

    private void saveWindowSizeToFile() {
        // 保存窗体大小到文件
        try (PrintWriter writer = new PrintWriter(new FileWriter(SIZE_FILE))) {
            writer.println(getWidth());
            writer.println(getHeight());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private Dimension readSizeFromFile() {
        // 从文件中读取窗体大小
        try (BufferedReader reader = new BufferedReader(new FileReader(SIZE_FILE))) {
            int width = Integer.parseInt(reader.readLine());
            int height = Integer.parseInt(reader.readLine());
            return new Dimension(width, height);
        } catch (IOException | NumberFormatException e) {
            // 如果文件不存在或者格式错误，返回默认大小
            return new Dimension(300, 200);
        }
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> new WindowSizeRecorder());
    }
}
